using System;
using System.Collections.Generic;
using System.Text;

using XNAF = Microsoft.Xna.Framework;

using XGAE.Framework.Extensions;

namespace XGAE.Abilities.Navigation
{
    public enum Mode
    {
        Stopped,
        Wandering,
        Seeking,
        Fleeing
    }

    /// <summary>
    /// Provides facilities for basic navigation.
    /// </summary>
    interface ISimple
    {
        /// <summary>
        /// Move around seemingly randomly while avoiding obstacles.
        /// </summary>
        void Wander();

        /// <summary>
        /// Halt the movement and keep the body completely still.
        /// </summary>
        void Stop();

        /// <summary>
        /// Attempt to move towards a point in space.
        /// </summary>
        /// <param name="target"></param>
        void Seek(XNAF.Vector3 target);

        /// <summary>
        /// Move away from a particular point in space.
        /// </summary>
        /// <param name="source"></param>
        void Flee(XNAF.Vector3 source);

        /// <summary>
        /// Pass back the direction of travel.
        /// </summary>
        /// <returns></returns>
        Angles GetHeading();
    }
}
